class Solution
{
public:
    long long beautifulSubarrays(vector<int> &nums)
    {
        unordered_map<int, int> xorPrefixCount;
        xorPrefixCount[0] = 1;
        long long result = 0;
        int xorPrefix = 0;
        for (int num : nums)
        {
            xorPrefix ^= num;
            result += xorPrefixCount[xorPrefix];
            ++xorPrefixCount[xorPrefix];
        }
        return result;
    }
};